
 void GTCounterUnit3( int player, string Ebuild, string Eunit, int Enum, string Obuild1, string Obuild2,int Onum, string Ounit, fixed ratio)
 { AICounterUnitSetup(player, Eunit, ratio, Ounit, ratio, Ounit);
	 if (GTCountE(player, Eunit) < Enum && GTCountE(player, Ebuild) == 0)
   {
counter_state = 0;//counter is not activated
return; }
    if (!GTFinishIA (player, Obuild1, Onum))
    {
counter_state = 0;//counter is not activated
GTBuildT(player, 4, 0, Obuild1, Onum, c_nearResource);
     return;
    }
    if (!GTFinishIA (player, Obuild2, Onum) && GTFinishIA (player, Obuild1, Onum))
    {
counter_state = 0;//counter is not activated
GTBuildT(player, 4, 0, Obuild2, Onum, c_nearResource);
     return;
    }
    if (GTFinishA(player, Obuild2, 1))
    {
counter_state = 1;//counter is activated
GTTrain(player, 4, 0, Ounit, AICounterUnitsAnyTech(player, GTEnemyID(player), Ounit  ));
    return; }
 }

 void GTInitCounters (int player) {
string p_race = PlayerRace(player);

if ( p_race == "Prot" ){
    // versus Protoss
    AICounterUnitSetup(player, c_PU_Zealot,             0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_Stalker,            0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_Sentry,             0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_HighTemplar,        0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_DarkTemplar,        0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_Archon,             0, c_TU_Banshee,     0, c_TU_Battlecruiser);
    AICounterUnitSetup(player, c_PU_Immortal,           0, c_TU_Marine,      0, c_TU_Ghost);
    AICounterUnitSetup(player, c_PU_Colossus,           0, c_TU_SiegeTank,   0, c_TU_Viking);
    AICounterUnitSetup(player, c_PU_Phoenix,            0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_PU_VoidRay,            0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_PU_Carrier,            0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_PB_PhotonCannon,       0, c_TU_Marauder,    0, c_TU_Battlecruiser);

    // versus Terran
    AICounterUnitSetup(player, c_TU_Marine,             0, c_TU_Marine,      0, c_TU_SiegeTank);
    AICounterUnitSetup(player, c_TU_Marauder,           0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_TU_Reaper,             0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_TU_Ghost,              0, c_TU_Marine,      0, c_TU_Thor);
    AICounterUnitSetup(player, c_TU_Hellion,            0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_TU_SiegeTank_Alias,    0, c_TU_Banshee,     0, c_TU_Banshee);
    AICounterUnitSetup(player, c_TU_Thor,               0, c_TU_Marauder,    0, c_TU_Battlecruiser);
    AICounterUnitSetup(player, c_TU_Viking_Alias,       0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_TU_Medivac,            0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TU_Raven,              0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TU_Banshee,            0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TU_Battlecruiser,      0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TB_Bunker,             0, c_TU_Marauder,    0, c_TU_Battlecruiser);

    // versus Zerg
    AICounterUnitSetup(player, c_ZU_Zergling,           0, c_TU_Marine,      0, c_TU_Hellion);
    AICounterUnitSetup(player, c_ZU_Baneling,           0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_ZU_Roach,              0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_ZU_Hydralisk,          0, c_TU_Marine,      0, c_TU_SiegeTank);
    AICounterUnitSetup(player, c_ZU_Infestor,           0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_ZU_Mutalisk,           0, c_TU_Marine,      0, c_TU_Thor);
    AICounterUnitSetup(player, c_ZU_Corruptor,          0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_ZU_Ultralisk,          0, c_TU_Thor,        0, c_TU_Battlecruiser);
    AICounterUnitSetup(player, c_ZU_BroodLord,          0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_ZB_SpineCrawler,       0, c_TU_Marauder,    0, c_TU_Battlecruiser);
}

else if ( p_race =="Terr" ){
    // versus Protoss
    AICounterUnitSetup(player, c_PU_Zealot,             0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_Stalker,            0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_Sentry,             0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_HighTemplar,        0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_DarkTemplar,        0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_PU_Archon,             0, c_TU_Banshee,     0, c_TU_Battlecruiser);
    AICounterUnitSetup(player, c_PU_Immortal,           0, c_TU_Marine,      0, c_TU_Ghost);
    AICounterUnitSetup(player, c_PU_Colossus,           0, c_TU_SiegeTank,   0, c_TU_Viking);
    AICounterUnitSetup(player, c_PU_Phoenix,            0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_PU_VoidRay,            0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_PU_Carrier,            0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_PB_PhotonCannon,       0, c_TU_Marauder,    0, c_TU_Battlecruiser);

    // versus Terran
    AICounterUnitSetup(player, c_TU_Marine,             0, c_TU_Marine,      0, c_TU_SiegeTank);
    AICounterUnitSetup(player, c_TU_Marauder,           0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_TU_Reaper,             0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_TU_Ghost,              0, c_TU_Marine,      0, c_TU_Thor);
    AICounterUnitSetup(player, c_TU_Hellion,            0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_TU_SiegeTank_Alias,    0, c_TU_Banshee,     0, c_TU_Banshee);
    AICounterUnitSetup(player, c_TU_Thor,               0, c_TU_Marauder,    0, c_TU_Battlecruiser);
    AICounterUnitSetup(player, c_TU_Viking_Alias,       0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_TU_Medivac,            0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TU_Raven,              0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TU_Banshee,            0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TU_Battlecruiser,      0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_TB_Bunker,             0, c_TU_Marauder,    0, c_TU_Battlecruiser);

    // versus Zerg
    AICounterUnitSetup(player, c_ZU_Zergling,           0, c_TU_Marine,      0, c_TU_Hellion);
    AICounterUnitSetup(player, c_ZU_Baneling,           0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_ZU_Roach,              0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_ZU_Hydralisk,          0, c_TU_Marine,      0, c_TU_SiegeTank);
    AICounterUnitSetup(player, c_ZU_Infestor,           0, c_TU_Marauder,    0, c_TU_Marauder);
    AICounterUnitSetup(player, c_ZU_Mutalisk,           0, c_TU_Marine,      0, c_TU_Thor);
    AICounterUnitSetup(player, c_ZU_Corruptor,          0, c_TU_Marine,      0, c_TU_Marine);
    AICounterUnitSetup(player, c_ZU_Ultralisk,          0, c_TU_Thor,        0, c_TU_Battlecruiser);
    AICounterUnitSetup(player, c_ZU_BroodLord,          0, c_TU_Viking,      0, c_TU_Viking);
    AICounterUnitSetup(player, c_ZB_SpineCrawler,       0, c_TU_Marauder,    0, c_TU_Battlecruiser);
}

else {
    // versus Protoss
    AICounterUnitSetup(player, c_PU_Zealot,             0, c_ZU_Roach,       0, c_ZU_Roach);
    AICounterUnitSetup(player, c_PU_Stalker,            0, c_ZU_Zergling,    0, c_ZU_Ultralisk);
    AICounterUnitSetup(player, c_PU_Sentry,             0, c_ZU_Roach,       0, c_ZU_Hydralisk);
    AICounterUnitSetup(player, c_PU_HighTemplar,        0, c_ZU_Roach,       0, c_ZU_Roach);
    AICounterUnitSetup(player, c_PU_DarkTemplar,        0, c_ZU_Roach,       0, c_ZU_Hydralisk);
    AICounterUnitSetup(player, c_PU_Archon,             0, c_ZU_Hydralisk,   0, c_ZU_Hydralisk);
    AICounterUnitSetup(player, c_PU_Immortal,           0, c_ZU_Zergling,    0, c_ZU_Zergling);
    AICounterUnitSetup(player, c_PU_Colossus,           0, c_ZU_Roach,       0, c_ZU_Ultralisk);
    AICounterUnitSetup(player, c_PU_Phoenix,            0, c_ZU_Hydralisk,   0, c_ZU_Corruptor);
    AICounterUnitSetup(player, c_PU_VoidRay,            0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_PU_Carrier,            0, c_ZU_Corruptor,   0, c_ZU_Corruptor);
    AICounterUnitSetup(player, c_PB_PhotonCannon,       0, c_ZU_Roach,       0, c_ZU_BroodLord);

    // versus Terran
    AICounterUnitSetup(player, c_TU_Marine,             0, c_ZU_Baneling,    0, c_ZU_Baneling);
    AICounterUnitSetup(player, c_TU_Marauder,           0, c_ZU_Zergling,    0, c_ZU_Zergling);
    AICounterUnitSetup(player, c_TU_Reaper,             0, c_ZU_Roach,       0, c_ZU_Roach);
    AICounterUnitSetup(player, c_TU_Ghost,              0, c_ZU_Zergling,    0, c_ZU_Ultralisk);
    AICounterUnitSetup(player, c_TU_Hellion,            0, c_ZU_Roach,       0, c_ZU_Ultralisk);
    AICounterUnitSetup(player, c_TU_SiegeTank_Alias,    0, c_ZU_Zergling,    0, c_ZU_Zergling);
    AICounterUnitSetup(player, c_TU_Thor,               0, c_ZU_Zergling,    0, c_ZU_Zergling);
    AICounterUnitSetup(player, c_TU_Viking_Alias,       0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_TU_Medivac,            0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_TU_Raven,              0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_TU_Banshee,            0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_TU_Battlecruiser,      0, c_ZU_Corruptor,   0, c_ZU_Corruptor);
    AICounterUnitSetup(player, c_TB_Bunker,             0, c_ZU_Baneling,    0, c_ZU_BroodLord);

    // versus Zerg
    AICounterUnitSetup(player, c_ZU_Zergling,           0, c_ZU_Baneling,    0, c_ZU_Baneling);
    AICounterUnitSetup(player, c_ZU_Baneling,           0, c_ZU_Roach,       0, c_ZU_Roach);
    AICounterUnitSetup(player, c_ZU_Roach,              0, c_ZU_Roach,       0, c_ZU_Roach);
    AICounterUnitSetup(player, c_ZU_Hydralisk,          0, c_ZU_Hydralisk,   0, c_ZU_Hydralisk);
    AICounterUnitSetup(player, c_ZU_Infestor,           0, c_ZU_Zergling,    0, c_ZU_Zergling);
    AICounterUnitSetup(player, c_ZU_Mutalisk,           0, c_ZU_Mutalisk,    0, c_ZU_Corruptor);
    AICounterUnitSetup(player, c_ZU_Corruptor,          0, c_ZU_Hydralisk,   0, c_ZU_Hydralisk);
    AICounterUnitSetup(player, c_ZU_Ultralisk,          0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_ZU_BroodLord,          0, c_ZU_Mutalisk,    0, c_ZU_Mutalisk);
    AICounterUnitSetup(player, c_ZB_SpineCrawler,       0, c_ZU_Zergling,    0, c_ZU_Mutalisk);
}
}